#include "billboard.h"
#include <GL/glut.h>
#include <iostream>

using namespace std;


/********************************/
/** Constructeur / Destructeur **/
/********************************/

Billboard::Billboard(float largeur, float hauteur, const char *image)
{
  _premier=true;
  _bouger=true;
  _deltax=0.0;
  _deltay=0.0;
  _plan1 = new Plan(largeur, hauteur, image);
  _plan2 = new Plan(largeur, hauteur, image);

  (_plan1->getTexture())->setModePlaquage(GL_REPLACE);
  (_plan2->getTexture())->setModePlaquage(GL_REPLACE);
}

Billboard::~Billboard()
{
  if(_plan1) delete _plan1;
  if(_plan2) delete _plan2;
}


/***************************/
/**** Getters / Setters ****/
/***************************/

void Billboard::setBouger(bool b)
{
  _bouger=b;
  if(b==false)
  {
    float x, y, z;
    getPosition(x, y, z);
    setPosition(x+_deltax, y, z+_deltay);
  }
}


/******************************/
/***** Fonction de dessin *****/
/******************************/

void Billboard::_draw()
{
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glDepthMask(GL_FALSE);
  if(_bouger)
  {
    glTranslatef(_deltax, 0.0, _deltay);
  }
  _plan1->display();
  glRotatef(90,0.0,1.0,0.0);
  _plan2->display();

  glDepthMask(GL_TRUE);
  glDisable(GL_BLEND);
}



/***************************************/
/************** Callbacks **************/
/***************************************/

void Billboard::onMousePassiveMotionEvent(int x, int y)
{
  if(_premier)
  {
    _xold=x; 
    _yold=y;
    _premier=false;
  }
  else
  {
    _deltax = 0.05 * (x-_xold);
    _deltay = 0.05 * (y-_yold);
  }
}


